 $LOAD_PATH.unshift File.join(File.dirname(__FILE__),'../..','ext_pr1/lib')
 require 'ext_pr1_v4'

# erste Böhmklausur
#######################################1.Aufgabe der Klausur#######################################
#cons ::= (obj,list)::(Any x List) -> List
#reverse_endrec() :: List -> reverse List
class List
def reverse_endrec()
# self.size < 2 Überprüfung auf Anzahl der Elemente der Liste: Bei 1 oder 0 ist 
# ein Umdrehen unnötig, da die Liste leer oder einstellig ist.
#
# reverse_endrec_(List[], self): Übergibt eine Leere Liste an accu und die zu drehende
# Liste an data..
self.size < 2 ? self : reverse_endrec_(List[],self) 
end
# Zunächst wird geprüft, ob data eine Leere Liste enthält. Wenn dem so wäre, dass würde accu
# die fertige Liste enthalten und zurückgeben. Falls dies nicht der Fall ist wir die Methode
# rekursiv aufgerufen. Als accu wird nun eine Liste übergeben, die mit Hilfe von cons(obj,list) 
# zusammen gesetzt wird. Dabei wird das erste Element der "data" Liste herausgelöst und in accu 
# gesteckt. Dieser Vorgang wir wiederholt, bis data leer ist. FERTIG!
def reverse_endrec_(accu, data)
  data.empty? ? accu : reverse_endrec_(cons(data.first,accu),data.rest)
end

def count()
  self.each do |x; y|
    y=x+1
    puts(y)
  end
end
end
List[1,2,3,4,5,6,7,8,9,10].count()
#######################################2.Aufgabe der Klausur#######################################